/* eslint-disable */
// export function debounce(func, wait) {
//   let timeout;
//   return function () {
//     if (timeout) {
//       clearTimeout(timeout);
//     }
//     let callNow = !timeout;
//     timeout = setTimeout(() => {
//       timeout = null;
//     }, wait);
//     if (callNow) {
//       func.apply(this);
//     }
//   };
// }
// 防抖
export function debounce(func, wait, immediate) {
  var timeout, result;

  return function () {
    var context = this;
    var args = arguments;

    if (timeout) clearTimeout(timeout);
    if (immediate) {
      // 如果已经执行过，不再执行
      var callNow = !timeout;
      timeout = setTimeout(function () {
        timeout = null;
      }, wait);
      if (callNow) result = func.apply(context, args);
    } else {
      timeout = setTimeout(function () {
        func.apply(context, args);
      }, wait);
    }
    return result;
  };
}

// 节流
export function throttle(fn, interval) {
  var enterTime = 0; //触发的时间
  var gapTime = interval || 300; //间隔时间，如果interval不传，则默认300ms
  return function () {
    var context = this;
    var backTime = new Date(); //第一次函数return即触发的时间
    if (backTime - enterTime > gapTime) {
      fn.apply(context, arguments);
      enterTime = backTime; //赋值给第一次触发的时间，这样就保存了第二次触发的时间
    }
  };
}

// 根据身份证获取出生日期、性别、年龄
// 1取出生年月日(1989-03-18)，2取性别(1:男，2:女)，3取年龄
export function getInfoByIdCard(UUserCard, num) {
  if (!UUserCard || UUserCard.length < 18) {
    return '';
  }
  if (num === 1) {
    // 获取出生日期
    let birth = UUserCard.substring(6, 10) + '-' + UUserCard.substring(10, 12) + '-' + UUserCard.substring(12, 14);
    return birth;
  }
  if (num === 2) {
    // 获取性别
    if (parseInt(UUserCard.substr(16, 1)) % 2 === 1) {
      // 男
      return 1;
    } else {
      // 女
      return 0;
    }
  }
  if (num === 3) {
    // 获取年龄
    // let myDate = new Date();
    // let month = myDate.getMonth() + 1;
    // let day = myDate.getDate();
    // let age = myDate.getFullYear() - UUserCard.substring(6, 10) - 1;
    // if (
    //   UUserCard.substring(10, 12) < month ||
    //   (UUserCard.substring(10, 12) === month && UUserCard.substring(12, 14) <= day)
    // ) {
    //   age++;
    // }
    let len = (UUserCard + '').length;
    let strBirthday = '';
    if (len == 18) {
      //处理18位的身份证号码从号码中得到生日和性别代码
      strBirthday = UUserCard.substr(6, 4) + '/' + UUserCard.substr(10, 2) + '/' + UUserCard.substr(12, 2);
    }
    if (len == 15) {
      let birthdayValue = '';
      birthdayValue = UUserCard.charAt(6) + UUserCard.charAt(7);
      if (parseInt(birthdayValue) < 10) {
        strBirthday = '20' + UUserCard.substr(6, 2) + '/' + UUserCard.substr(8, 2) + '/' + UUserCard.substr(10, 2);
      } else {
        strBirthday = '19' + UUserCard.substr(6, 2) + '/' + UUserCard.substr(8, 2) + '/' + UUserCard.substr(10, 2);
      }
    }
    let birthDate = new Date(strBirthday);
    let nowDateTime = new Date();
    let age = nowDateTime.getFullYear() - birthDate.getFullYear();
    //再考虑月、天的因素;.getMonth()获取的是从0开始的，这里进行比较，不需要加1
    if (
      nowDateTime.getMonth() < birthDate.getMonth() ||
      (nowDateTime.getMonth() == birthDate.getMonth() && nowDateTime.getDate() < birthDate.getDate())
    ) {
      age--;
    }
    return age;
  }
}
/* eslint-enable */
export function getData() {
  let format = '';
  let oY = '';
  let oM = '';
  let oD = '';
  let oDate = new Date();
  oY = oDate.getFullYear();
  oM = oDate.getMonth() + 1;
  oM = oM < 10 ? '0' + oM : oM;
  oD = oDate.getDate();
  oD = oD < 10 ? '0' + oD : oD;
  format = oY + '-' + oM + '-' + oD;
  return format;
}
// 获取日期：YY-MM-DD HH:MM:SS
/* eslint-disable */
export function getDataTime() {
  var myDate = new Date();
  myDate.getYear(); // 获取当前年份(2位)
  myDate.getFullYear(); // 获取完整的年份(4位,1970-????)
  myDate.getMonth(); // 获取当前月份(0-11,0代表1月)
  myDate.getDate(); // 获取当前日(1-31)
  myDate.getDay(); // 获取当前星期X(0-6,0代表星期天)
  myDate.getTime(); // 获取当前时间(从1970.1.1开始的毫秒数)
  myDate.getHours(); // 获取当前小时数(0-23)
  myDate.getMinutes(); // 获取当前分钟数(0-59)
  myDate.getSeconds(); // 获取当前秒数(0-59)
  myDate.getMilliseconds(); // 获取当前毫秒数(0-999)
  myDate.toLocaleDateString(); // 获取当前日期
  var mytime = myDate.toLocaleTimeString(); // 获取当前时间
  myDate.toLocaleString(); // 获取日期与时间
  Date.prototype.Format = function (fmt) {
    // author: meizz
    var o = {
      'M+': this.getMonth() + 1, // 月份
      'd+': this.getDate(), // 日
      'h+': this.getHours(), // 小时
      'm+': this.getMinutes(), // 分
      's+': this.getSeconds(), // 秒
      'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
      S: this.getMilliseconds() // 毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
    for (var k in o)
      if (new RegExp('(' + k + ')').test(fmt))
        fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
    return fmt;
  };
  return new Date().Format('yyyy-MM-dd hh:mm:ss');
}
// 获取参数
export function getQueryString(url, name) {
  let reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i');
  let r = url.substr(1).match(reg);
  if (r !== null) {
    return r[2];
  }
  return null;
}
export function getAge(strBirthday) {
  var returnAge;
  var strBirthdayArr = strBirthday.split(/\-|\//);
  var birthYear = strBirthdayArr[0];
  var birthMonth = strBirthdayArr[1];
  var birthDay = strBirthdayArr[2];

  var d = new Date();
  var nowYear = d.getFullYear();
  var nowMonth = d.getMonth() + 1;
  var nowDay = d.getDate();

  if (nowYear == birthYear) {
    returnAge = 0; //同年 则为0岁
  } else {
    var ageDiff = nowYear - birthYear; // 年之差
    if (ageDiff > 0) {
      if (nowMonth == birthMonth) {
        var dayDiff = nowDay - birthDay; // 日之差
        if (dayDiff < 0) {
          returnAge = ageDiff - 1;
        } else {
          returnAge = ageDiff;
        }
      } else {
        var monthDiff = nowMonth - birthMonth; //月之差
        if (monthDiff < 0) {
          returnAge = ageDiff - 1;
        } else {
          returnAge = ageDiff;
        }
      }
    } else {
      returnAge = -1; //返回-1 表示出生日期输入错误 晚于今天
    }
  }
  return returnAge; //返回周岁年龄
}
